// Copyright © SixtyFPS GmbH <info@slint.dev>
// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2.0 OR LicenseRef-Slint-Software-3.0

component DeprecatedDerives inherits PopupWindow {
    close-on-click: false;
//                  ^warning{The property 'close-on-click' has been deprecated. Please use 'close-policy' instead}
}


component Derives inherits PopupWindow {
    close-policy: close-on-click-outside;
}

component D1 inherits PopupWindow {
    close-on-click: false;
//                  ^error{close-policy and close-on-click cannot be set at the same time}
    close-policy: close-on-click-outside;
}

component D2 inherits PopupWindow {
    close-on-click: (!false);
//                  ^warning{The property 'close-on-click' has been deprecated. Please use 'close-policy' instead}
//                  ^^error{The close-on-click property only supports constants at the moment}
}

component D3 inherits PopupWindow {
    in property <PopupClosePolicy> pp;
    close-policy: pp;
//                ^error{The close-policy property only supports constants at the moment}
}



export component Bar {
    in property <bool> external;
    xx := PopupWindow {
        close-on-click: true;
//                      ^warning{The property 'close-on-click' has been deprecated. Please use 'close-policy' instead}
        init => {
            xx.close-on-click = true;
//          ^error{The property must be known at compile time and cannot be changed at runtime}

            xx.close-policy = PopupClosePolicy.close-on-click;
//          ^error{The property must be known at compile time and cannot be changed at runtime}
        }
    }
    PopupWindow {
        close-on-click: root.external;
//                      ^warning{The property 'close-on-click' has been deprecated. Please use 'close-policy' instead}
//                      ^^error{The close-on-click property only supports constants at the moment}
    }


    Rectangle {
        PopupWindow {
            close-policy: close-on-click-outside;
            close-on-click: true;
//                          ^error{close-policy and close-on-click cannot be set at the same time}
        }

        DeprecatedDerives {
            close-policy: close-on-click-outside;
        }
        Derives {
            close-on-click: false;
//                          ^warning{The property 'close-on-click' has been deprecated. Please use 'close-policy' instead}
        }
        DeprecatedDerives {
            close-on-click: true;
//                          ^warning{The property 'close-on-click' has been deprecated. Please use 'close-policy' instead}
        }

        DeprecatedDerives {
            close-on-click: !true;
//                          ^warning{The property 'close-on-click' has been deprecated. Please use 'close-policy' instead}
//                          ^^error{The close-on-click property only supports constants at the moment}
        }

        D1{}
        D2{}
        D3{}
        D1{}
        D2{}
        D3{ close-on-click: true;  }
//                          ^warning{The property 'close-on-click' has been deprecated. Please use 'close-policy' instead}
    }


}
